<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.JS延迟加载的方式有哪些？（5）
        // defer、放加载文档的最后
        // 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；（5）
        // ECMAScript：JS语法标准
        //DOM:文档对象模型
        //BOM:浏览器对象模型
        // 3.JavaScript 的数据类型有哪些？（5）
        // 基本：String、Number、Boolean、null、undefined
        // 复杂：Object、Function、Array
        // 4.如何进行数据类型的判断？（5）
        // 1.typeof 数据
        // 2.数据 instanceof 构造函数
        // 3.Object.prototype.toString(数据)

        // 5.null 和 undefined 的区别？什么时候会得到 undefined？（5）
        // null是对象类型，表示一个空值、空对象，但是不等于实际的空对象{}
        // undefined表示未赋值，声明变量未赋值则存着undefined
        // 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？（5）

        // 7.使用 continue 或 break 终止循环时，两种方式的区别是？（5）
        // continue跳出本次循环执行下一次循环
        // break跳出整个循环体
        // 8.如何判断字符串内是否包含指定字符？（5）
        // indexOf\lastIndexOf
        // 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；（5）
        // 修改原数组:push\pop\shift\unshift\splice
        // 不修改原数组:concat\join\slice\includes\indexOf\lastIndexOf
        // 10. 请写出下面语句的输出结果：（5）
        // var bar = true,
        //     number = 0;
        // console.log(bar + 0);//1
        // console.log(bar + "xyz");//"truexyz"
        // console.log(bar + true);//2
        // console.log(+true);//1
        // console.log(!'bluej');//false
        // console.log(number++);//0
        // console.log(++number);//2
        // console.log(number);//2

        // 11. 根据用户输入时间实现倒计时，输入格式错误时要有所提示（5）
        // var time = window.prompt("请输入目标时间:2021 11 11 00:00:00");
        // time = new Date(time);



        // 13.把下面数组成员排序打乱；（5）

        //方法一:arr不重复的情况下
        // var arr = [10, 20, 30, 40, 50, 60];
        // var b = [];
        // console.log(Math.floor(Math.random()*6))  //[0,6)
        // while(true){
        //     if(b.length==5){
        //         break;
        //     }
        //     let num = Math.floor(Math.random()*6);
        //     if(b.includes(arr[num])==false){
        //         b.push(arr[num])
        //     }
        // }
        // console.log(b);

        // 方法二:arr可重复
        // var arr = [10, 20, 30, 30, 50, 60];
        // var b = [];
        // while(true){
        //     if(b.length==5){
        //         break;
        //     }
        //     let num = Math.floor(Math.random()*6);
        //     if(arr[num]!=null){
        //         b.push(arr[num]);
        //         arr[num] = null;
        //     }
        // }
        // console.log(b)

        // 12.输出从小到大排序好的五个不重复的随机"素数",范围[10-58)；（10）
        // let num = Math.floor(Math.random()*49)+10;//[10,58)
        // var arr = [];
        // while(true){
        //     if(arr.length == 5){
        //         break;
        //     }
        //     let n = Math.floor(Math.random()*49)+10;
        //     // if(num%2 != 0){
        //     //     arr.push(num)
        //     // }
        //     // for(let i = 2;i<=n;i++){
        //     //     if(n%i==0){
        //     //         arr.push(n);
        //     //         // break;
        //     //     }
        //     // }
        //     // arr.push(n);
        // }
        // arr.sort(function(a,b){
        //     return a-b;
        // })
        // console.log(arr);


        // 14. 将多个数组进行去重合并；（10）
        //方法一:合并再去重
        // var arr1 = [1, 2, 3],arr2 = [2, 3, 4, 5];
        // var b = arr1.concat(arr2);
        // var c = [];
        // for(let i = 0;i<b.length;i++){
        //     if(c.includes(b[i])==false){
        //         c.push(b[i])
        //     }
        // }
        // console.log(c)
        //方法二:去重再合并
        // var arr1 = [1, 2, 3],arr2 = [2, 3, 4, 5];
        // for(let i = 0;i<arr1.length;i++){
        //     if(arr2.includes(arr1[i])==false){
        //         arr2.push(arr1[i])
        //     }
        // }
        // console.log(arr2)


        // // 15. 找出数组 arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"] 中重复出现过的元素,并用数组将重复元素装起来输出,并且统计每个元素出现的次数（10）
        // var arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"];
        // var b = [];var c= [];
        // arr.forEach(function(value,index){
        //     if(b.includes(value)==false){
        //         b.push(value);
        //     }else{
        //         c.push(value)
        //     }
        // })
        // console.log(b,c)

        // // 16. 找出数组中年龄小于18岁的女生的信息重新组成新的数组,并且将她们count变为现有的平方（10）
        // var arr = [{
        //         name: "111",
        //         sex: "boy",
        //         age: 18,
        //         count: 20
        //     },
        //     {
        //         name: "222",
        //         sex: "girl",
        //         age: 17,
        //         count: 30
        //     },
        //     {
        //         name: "333",
        //         sex: "boy",
        //         age: 16,
        //         count: 40
        //     },
        //     {
        //         name: "444",
        //         sex: "girl",
        //         age: 15,
        //         count: 50
        //     },
        //     {
        //         name: "555",
        //         sex: "boy",
        //         age: 20,
        //         count: 60
        //     },
        //     {
        //         name: "666",
        //         sex: "girl",
        //         age: 13,
        //         count: 70
        //     },
        //     {
        //         name: "777",
        //         sex: "boy",
        //         age: 14,
        //         count: 80
        //     }
        // ]
        // var b = [];
        // arr.forEach(function(value,index){
        //     if(value.age<18){
        //         value.count = Math.pow(value.count,2);
        //         b.push(value);
        //     }
        // })
        // console.log(b)
    </script>
</body>

</html>